package mips;

import mips.estructurasMemoria.Palabra;

/**
 *@date 14-6-9
 * Representa el contexto de un hilo. Esto es, su pc y el estado de los 32 registros.
 * En rigor, guardar el contenido del registro 0 es redundante, pero su costo es
 * mínimo y vuelve más claro el lidiar con un contexto.
 */
public class Contexto {
    private int PC;
    private Palabra [] registros;
    private boolean halt; // Ver si hace falta
    private int idHilo;
    
    public Contexto(int idHilo){
        this.registros = new Palabra[Nucleo.NUM_REGISTROS];
         for(int i = 0; i < Nucleo.NUM_REGISTROS; i++){
            this.registros[i] = new Palabra(-1);
        }
        this.idHilo = idHilo;
    }

    public int getIdHilo() {
        return idHilo;
    }

    public void setIdHilo(int idHilo) {
        this.idHilo = idHilo;
    }


    public void setPC(int PC) {
        this.PC = PC;
    }

    public void setHalt(boolean halt) {
        this.halt = halt;
    }

    public void setRegistros(Palabra[] registros) {
        for(int i = 0; i < Nucleo.NUM_REGISTROS; i++){
            this.registros[i] = registros[i];
        }
    }

    public int getPC() {
        return PC;
    }

    /** */
    public boolean getHalt() {
        return halt;
    }

    public Palabra[] getRegistros() {
        return registros;
    }
    
}
